STM32超低功耗进阶之电源管理库函数(一)

您所在的位置:网站首页 gpio pwr STM32超低功耗进阶之电源管理库函数(一)

STM32超低功耗进阶之电源管理库函数(一)

2024-07-14 10:07| 来源: 网络整理| 查看: 265

一,电源管理库函数

前面的入门文章对 STM32 的超低功耗的做了使用介绍,当然在使用超低功耗的时候还会考虑 RAM 的数据会不会丢失,什么时候重写 备份寄存器,进入低功耗模式的时候要怎么保持 IO 的状态,本篇文章就带来这些的介绍。

二,电源管理的 API

ST 的 HAL 库做了很全面的低功耗相关的 API , 知道这些函数的作用,掌握这些函数的作用,就会对超低功耗有了进一步的认识。

复位电源管理寄存器 void HAL_PWR_DeInit(void) 复位电源管理寄存器,将他们设置到默认重置值,复位之后将导致外设无法正常工作。具体的复位值可以在手册上看到。 例如下图: 在这里插入图片描述 这里的复位值是 0x0000 0200 也就是 bit9 为 1, 其他位全部为 0. 在这里插入图片描述 bit9 的电源范围是 RANGE1

备份域是否可访问 可访问备份域: void HAL_PWR_EnableBkUpAccess(void) 使能之后,RTC 寄存器 RTC 备份数据寄存器是可以访问的,也就是可以进行写操作 不可访问备份域: void HAL_PWR_DisableBkUpAccess(void) 关闭之后 备份域的数据将不能够再改变

配置电压检测的阈值 在 STM32L4 系列的 MCU 中支持电压阈值的检测,检测到异常之后会触发一个中断 PVD_PVM_IRQHandler , 这个 PVD(Power Voltage Detector) 是可以配置的,配置函数:

HAL_StatusTypeDef HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD)

typedef struct { uint32_t PVDLevel; /*!< PVDLevel: Specifies the PVD detection level. This parameter can be a value of @ref PWR_PVD_detection_level. */ uint32_t Mode; /*!< Mode: Specifies the operating mode for the selected pins. This parameter can be a value of @ref PWR_PVD_Mode. */ }PWR_PVDTypeDef;

通过上面的结构体可以知道,实际上就是配置了 2 个参数。

PVDLevel 可以配置的值参考手册: 在这里插入图片描述

mode 可以配置成 4 种模式:

PVD_MODE_IT : 外部中断PVD_MODE_EVT : 内部事件PVD_RISING_EDGE : 上升沿触发PVD_FALLING_EDGE : 下降沿触发

完成上面的配置之后,还要调用使能的函数之后,以上的配置才会生效: 使能函数:void HAL_PWR_EnablePVD(void) 失能函数:void HAL_PWR_DisablePVD(void)

唤醒引脚的配置 在 MCU 进入低功耗模式之后可以通过特定的 I/O(唤醒引脚) , 来实现唤醒 MCU,这些引脚是固定不可复用。 这些引脚只有在使能之后才能有唤醒 MCU 的能力。

使能唤醒引脚:void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity) 可设置的值如下:

#define PWR_WAKEUP_PIN1_HIGH PWR_CR3_EWUP1 /*!< Wakeup pin 1 (with high level polarity) */ #define PWR_WAKEUP_PIN2_HIGH PWR_CR3_EWUP2 /*!< Wakeup pin 2 (with high level polarity) */ #define PWR_WAKEUP_PIN3_HIGH PWR_CR3_EWUP3 /*!< Wakeup pin 3 (with high level polarity) */ #define PWR_WAKEUP_PIN4_HIGH PWR_CR3_EWUP4 /*!< Wakeup pin 4 (with high level polarity) */ #define PWR_WAKEUP_PIN5_HIGH PWR_CR3_EWUP5 /*!< Wakeup pin 5 (with high level polarity) */ #define PWR_WAKEUP_PIN1_LOW (uint32_t)((PWR_CR4_WP1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3